home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / ULARN.ARJ / ULARN.TAR / ularn / regen.c < prev    next >
C/C++ Source or Header  |  1989-10-25  |  4KB  |  185 lines

  1. /* regen.c */
  2. #include "header.h"
  3. /*
  4.     *******
  5.     REGEN()
  6.     *******
  7.     regen()
  8.  
  9.     subroutine to regenerate player hp and spells
  10.  */
  11. regen()
  12. {
  13.     register int i,flag;
  14.     register long *d;
  15.  
  16.     d = c;
  17.     if (d[TIMESTOP])  { 
  18.         if(--d[TIMESTOP]<=0) 
  19.             bottomline();  
  20.         return; 
  21.     }    /* for stop time spell */
  22.     flag=0;
  23.  
  24.     if (d[STRENGTH]<3) { 
  25.         d[STRENGTH]=3; 
  26.         flag=1; 
  27.     }
  28.     if ((d[HASTESELF]==0) || ((d[HASTESELF] & 1) == 0))
  29.         gtime++;
  30.  
  31.     if (d[HP] != d[HPMAX])
  32.         if (d[REGENCOUNTER]-- <= 0)    /*regenerate hit points    */
  33.         {
  34.             d[REGENCOUNTER] = 22 + (d[HARDGAME]<<1) - d[LEVEL];
  35.             if ((d[HP] += d[REGEN]) > d[HPMAX])  
  36.                 d[HP] = d[HPMAX];
  37.             bottomhp();
  38.         }
  39.  
  40.     if (d[SPELLS] < d[SPELLMAX])        /*regenerate spells    */
  41.         if (d[ECOUNTER]-- <= 0) {
  42.             d[ECOUNTER] = 100+4*(d[HARDGAME]-d[LEVEL]-d[ENERGY]);
  43.             d[SPELLS]++;    
  44.             bottomspell();
  45.         }
  46.  
  47.     if (d[HERO])    
  48.         if (--d[HERO]<=0) { 
  49.             for (i=0; i<6; i++) 
  50.                 d[i] -= 10; 
  51.             flag=1; 
  52.         }
  53.     if (d[COKED])
  54.         if (--d[COKED]<=0) {
  55.             for (i=0; i<6; i++)
  56.                 d[i] -= 34;
  57.             flag=1;
  58.         }
  59.     if (d[ALTPRO])    
  60.         if (--d[ALTPRO]<=0) { 
  61.             d[MOREDEFENSES]-=3; 
  62.             flag=1; 
  63.         }
  64.     if (d[PROTECTIONTIME])    
  65.         if (--d[PROTECTIONTIME]<=0) {
  66.             d[MOREDEFENSES]-=2; 
  67.             flag=1; 
  68.         }
  69.     if (d[DEXCOUNT])
  70.         if (--d[DEXCOUNT]<=0)    { 
  71.             if ( (d[DEXTERITY]-=3) < 3 )
  72.                 d[DEXTERITY] = 3;
  73.             flag=1; 
  74.         }
  75.     if (d[STRCOUNT])
  76.         if (--d[STRCOUNT]<=0)    { 
  77.             d[STREXTRA]-=3; 
  78.             flag=1; 
  79.         }
  80.     if (d[BLINDCOUNT])
  81.         if (--d[BLINDCOUNT]<=0) { 
  82.             cursors();  
  83.             lprcat("\nThe blindness lifts  "); 
  84.             beep(); 
  85.         }
  86.     if (d[CONFUSE])    
  87.         if (--d[CONFUSE]<=0) { 
  88.             cursors();  
  89.             lprcat("\nYou regain your senses"); 
  90.             beep(); 
  91.         }
  92.     if (d[GIANTSTR])
  93.         if (--d[GIANTSTR]<=0) { 
  94.             d[STREXTRA] -= 20; 
  95.             flag=1; 
  96.         }
  97.     if (d[CHARMCOUNT])
  98.         if ((--d[CHARMCOUNT]) <= 0) flag=1;
  99.     if (d[INVISIBILITY])    
  100.         if ((--d[INVISIBILITY]) <= 0) flag=1;
  101.     if (d[CANCELLATION])
  102.         if ((--d[CANCELLATION]) <= 0) flag=1; 
  103.     if (d[WTW])
  104.         if ((--d[WTW]) <= 0) flag=1; 
  105.     if (d[HASTESELF])
  106.         if ((--d[HASTESELF]) <= 0) flag=1;
  107.     if (d[AGGRAVATE])
  108.         --d[AGGRAVATE]; 
  109.     if (d[SCAREMONST])
  110.         if ((--d[SCAREMONST]) <= 0) flag=1; 
  111.     if (d[STEALTH])    
  112.         if ((--d[STEALTH]) <= 0) flag=1; 
  113.     if (d[AWARENESS])        
  114.         if(c[ORB] != 2)
  115.             --d[AWARENESS];
  116.     if (d[HOLDMONST])        
  117.         if ((--d[HOLDMONST]) <= 0) flag=1;
  118.     if (d[HASTEMONST])        
  119.         --d[HASTEMONST];
  120.     if (d[FIRERESISTANCE])    
  121.         if ((--d[FIRERESISTANCE]) <= 0) flag=1;
  122.     if (d[GLOBE])
  123.         if (--d[GLOBE]<=0) { 
  124.             d[MOREDEFENSES]-=10; 
  125.             flag=1; 
  126.         }
  127.     if (d[SPIRITPRO])
  128.         if (--d[SPIRITPRO] <= 0) flag=1;
  129.     if (d[UNDEADPRO])        
  130.         if (--d[UNDEADPRO] <= 0) flag=1;
  131.     if (d[HALFDAM])            
  132.         if (--d[HALFDAM]<=0)  { 
  133.             cursors();  
  134.             lprcat("\nYou now feel better "); 
  135.             beep(); 
  136.         }
  137.     if (d[SEEINVISIBLE])  {
  138.         int i;
  139.         for (i=0;i<26;i++)
  140.             if (iven[i]==OAMULET) {
  141.                 i=999;
  142.                 break;
  143.             }
  144.         if (i!=999)
  145.             if (--d[SEEINVISIBLE]<=0) {
  146.                 monstnamelist[INVISIBLESTALKER] = ' ';
  147.                 cursors();  
  148.                lprcat("\nYou feel your vision return to normal"); 
  149.                 beep(); 
  150.             }
  151.     }
  152.  
  153.     if (d[ITCHING]) {
  154.         if (d[ITCHING]>1)
  155.             if ((d[WEAR]!= -1) || (d[SHIELD]!= -1))
  156.                 if (rnd(100)<50) {         
  157.                     d[WEAR]=d[SHIELD]= -1; 
  158.                     cursors();
  159.     lprcat("\nThe hysteria of itching forces you to remove your armor!"); 
  160.                     beep(); 
  161.                     recalc();  
  162.                     bottomline();
  163.                 }
  164.         if (--d[ITCHING]<=0) { 
  165.             cursors();  
  166.             lprcat("\nYou now feel the irritation subside!"); 
  167.             beep(); 
  168.         }
  169.     }
  170.     if (d[CLUMSINESS]) {
  171.         if (d[WIELD] != -1)
  172.             if (d[CLUMSINESS]>1)
  173.               if (item[playerx][playery]==0)/* if nothing there */
  174.                 if (rnd(100)<33) /* drop your weapon */
  175.                     drop_object((int)d[WIELD]);
  176.         if (--d[CLUMSINESS]<=0) { 
  177.             cursors();  
  178.             lprcat("\nYou now feel less awkward!"); 
  179.             beep(); 
  180.         }
  181.     }
  182.     if (flag) 
  183.         bottomline();
  184. }
  185.